const path = require('path');

module.exports = {
    mode: 'production',
    entry: {
        calculator: './src/calculator.js'
    },
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: '[name].js',

        /**
         * 暴露的library的变量名
         */
        // library: '[name]',
        /**
         * 根据libraryTarget配置暴露哪些模块，_entry_return，默认值，即为入口起点的返回值
         * default = _entry_return.default
         * MyModule = _entry_return.MyModule
         * ['MyModuel','MySubModule']  = _entry_return.MyModule.MySubModule
         */
        // libraryExport: 'default',
        /**
         * library的暴露方式，可选值：var、this、window、global、commonjs
         * 假设output.library = MyLibrary
         * 
         * var，默认值，用script标签引用，作为一个全局变量使用
         *      var MyLibrary = _entry_return
         *      MyLibrary.doSomething()
         * 
         * this，将入口起点的返回值赋值给this的一个属性
         *      this['MyLibrary'] = _entry_return
         *      this['MyLibrary'].doSomething()
         * 
         * window，将入口起点的返回值赋值给window的一个属性
         *      window['MyLibrary'] = _entry_return
         *      window['MyLibrary'].doSomething()
         * 
         * global，将入口起点的返回值赋值给global的一个属性
         *      global['MyLibrary'] = _entry_return
         *      global['MyLibrary'].doSomething()
         * 
         * commonjs，将入口起点的返回值赋值给exports的一个属性
         *      exports['MyLibrary'] = _entry_return
         *      require('MyLibrary').doSomething()
         * 
         * commonjs2，将入口起点的返回值赋值给module.exports对象
         *      module.exports = _entry_return
         *      require('MyLibrary').doSomething()
         * 
         * amd，将library暴露为AMD模块
         * 
         * umd，将library暴露为所有模块定义下都可以运行的方式
         * 
         * jsonp，将入口起点的返回值包裹到一个jsonp包装容器中
         *      MyLibrary(_entry_return_)
         */
        libraryTarget: 'commonjs2'
    }
}